home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / c / c-bat-0.1n / c-bat-0 / c-bat-0.1 / src / hash.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-16  |  1.4 KB  |  66 lines

  1. /* hash.h */
  2.  
  3. #ifndef TRUE
  4.  
  5. #define TRUE    1
  6. #define FALSE    0
  7.  
  8. #endif
  9.  
  10. #define SZE_HASH_IDENT     50
  11. #define SZE_HASH_TABLE    65537    /* should be a prime value */
  12.  
  13. #define TOKEN_FOUND     1L
  14. #define TOKEN_NOT_FOUND    -1L
  15.  
  16. #define TOKEN_SEPARATOR    '|'    /* Separator  */
  17.  
  18. #define TOKEN_DEFD    1    /* Bit 1 */
  19. #define TOKEN_USED    2    /* Bit 2 */
  20. #define TOKEN_LOCAL    4    /* Bit 3 */
  21.  
  22. #ifndef __BYTE_DEFINED__
  23.  
  24. typedef unsigned char   byte;
  25. typedef unsigned short  word;
  26.  
  27. #define __BYTE_DEFINED__   1
  28. #endif
  29.  
  30. typedef struct {    char    ident [SZE_HASH_IDENT];    /* Token-Name */
  31.             long    type;            /* Token-Typ */
  32.             short    flags;            /* Flags */
  33.             void    *data;            /* Datenspeicher */
  34.         }    t_hash_data;
  35.  
  36. typedef struct {    char    *ident;            /* Token-Name */
  37.  
  38.             long    type;            /* Token-Typ */
  39.             short    flags;            /* Flags */
  40.             void    *data;            /* Datenspeicher */
  41.         }    t_hash_table_data;
  42.  
  43. typedef t_hash_table_data t_hash_table [SZE_HASH_TABLE];
  44.  
  45. typedef char t_ident [SZE_HASH_IDENT];
  46.  
  47.  
  48. /* function prototypes: */
  49.  
  50. void init_hashtable (void);
  51. long save_hashtable (void);
  52. long load_hashtable (void);
  53. long hash_search_steps (void);
  54.  
  55. void set_token_flag (long index, short flag);
  56. short get_token_flag (long index);
  57.  
  58. long search_token (char *ident, t_hash_data *data);
  59. long insert_token (t_hash_data *data);
  60. void update_token (t_hash_data *data, long index);
  61. void get_token (t_hash_data *data, long index);
  62. void clear_token (long index);
  63. long create_token_id (void);
  64.  
  65. char *get_symbol (long index);
  66.